package com.zw.design.pattern.creational.singleton.hungry.inove;

import java.io.Serializable;

/***
 * 饿汉式
 */
public class HungryLazySingleton2 implements Serializable {

    private  final  static HungryLazySingleton2 hungryLazySingleton;
    static {
        hungryLazySingleton =new HungryLazySingleton2();
    }
    private HungryLazySingleton2(){
        //避免反射打破私有构造方法 加上防御
        if (hungryLazySingleton!=null){
            throw new RuntimeException("单例构造器禁止使用反射去获取");
        }

    }
    public static HungryLazySingleton2 getInstance(){
        return hungryLazySingleton;
    }

    /***
     * 写了该方法 那么内部源代码就不会反射的去创建对象 而是之间返回该创建好的对象
     * @return
     */
    private Object readResolve(){
        return hungryLazySingleton;
    }



}
